import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

/**
 * @Description: 学习异常
 * @Author Stark
 * @Date 2022/1/21 18:54
 **/
public class ExceptionTest {
    public static void main(String[] args) {
        //System.out.println(10/0);

//        int[] arr = new int[]{1,2,3};
//        System.out.println(arr[10]);
//        System.out.println(arr[1]);

//        String str = null;
//        System.out.println(str.equals("hello"));

//        int[] arr = new int[]{1,2,3};
//        try{
//            arr = null;
//            System.out.println(arr[10]);
//        }catch (ArrayIndexOutOfBoundsException e){
//            System.out.println("数组下标越界");
//        }catch (NullPointerException e){
//            System.out.println("空指针异常");
//        }

//        int[] arr = new int[]{1,2,3};
//        try{
//            arr = null;
//            System.out.println(arr[10]);
//        }catch (ArrayIndexOutOfBoundsException | NullPointerException e){
//            System.out.println("出现异常");
//        }
//        System.out.println("异常之后的代码");

//        int[] arr = new int[]{1,2,3};
//        try{
//            arr = null;
//            System.out.println(arr[10]);
//        }catch (Exception e){
//            System.out.println("出现异常");
//        }
//        System.out.println("异常之后的代码");

//        int[] arr = new int[]{1,2,3};
//        try{
//            System.out.println(arr[10]);
//        }catch (ArrayIndexOutOfBoundsException e){
//            //此处的e就是异常对象，默认时有JVM产生传递给catch代码段
//            System.out.println("数组越界了");
//            //打印异常出现的调用栈
//            e.printStackTrace();
//        }
//        System.out.println("异常之后的代码");

//        File file = new File("test.txt");
//        //不是从键盘输入，将文件内容输入到Scanner中
//        Scanner scanner = null;
//        try{
//            scanner = new Scanner(file);
//            System.out.println("文件正确加载完毕");
//        } catch (FileNotFoundException e) {
//            System.out.println("文件不存在");
//            e.printStackTrace();
//        }finally {
//            //执行完所有业务后，最后要处理的代码
//            System.out.println("文件正常处理完毕");
//        }
//
//        System.out.println(testException());

//        try{
//            //若此时main也没有进行异常处理
//            exceptionChain();
//        }catch (ArrayIndexOutOfBoundsException e){
//            System.out.println("数组越界");
//            e.printStackTrace();
//        }

    }

    private static void exceptionChain() {
        int[] arr = new int[]{1,2,3};
        System.out.println(arr[10]);
    }

    public static int testException(){
        try{
            String str = null;
            System.out.println(str.equals("123"));
            return 1;
        }catch (NullPointerException e){
            return 2;
        }finally {
            System.out.println("finally中的代码块");
            return 3;
        }
    }
}
